exports.arrayToTree = (arr) => {
  const map = {}; // 创建映射表
  const tree = []; // 存储最终的树形结构

  // 初始化映射表，每个节点都有一个children数组
  arr.forEach((item) => {
    map[item.id] = { ...item, children: [] };
  });

  // 构建树形结构
  arr.forEach((item) => {
    if (
      item.parent_id === null ||
      item.parent_id === undefined ||
      item.parent_id === 0
    ) {
      // 如果没有parentId，说明是根节点
      tree.push(map[item.id]);
    } else {
      // 如果有parentId，将其添加到父节点的children数组中
      if (map[item.parent_id]) {
        map[item.parent_id].children.push(map[item.id]);
      }
    }
  });

  return tree;
};

// 移动文件
exports.moveFile = async (oldPath, newPath) => {
  try {
    const path = require("path");
    const fse = require("fs-extra");
    const source = path.resolve(oldPath);
    const target = path.resolve(newPath);
    await fse.move(source, target); // 移动
    await fse.remove(source); // 删除源文件
  } catch (error) {
    throw new Error("移动文件失败");
  }
};
